
"""
  代码案例: 人生重开模拟器.
"""
import random
import sys
import time

# 欢迎界面.
print("+-------------------------------------------------+")
print("|                                                 |")
print("|             花有重开日, 人无再少年                  |")
print("|                                                 |")
print("|             欢迎来到人生重开模拟器                  |")
print("|                                                 |")
print("+-------------------------------------------------+")

# 设置初始属性: 颜值  体质  智力  家境 --> 总和不超过 20, 每一项都是在 1 - 10 之间
while True:
    print("请设置 颜值  体质  智力  家境 的初始属性(可用点数总数为 20)")
    face = int(input("请输入颜值点数(1 - 10): "))
    strong = int(input("请输入体质点数(1 - 10): "))
    iq = int(input("请输入智力点数(1 - 10): "))
    home = int(input("请输入家境点数(1 - 10): "))
    # 校验 颜值,体质,智力,家境
    if face < 1 or face > 10:
        print("颜值点数设置有误!  请再次设置!")
        print()
        continue
    if strong < 1 or strong > 10:
        print("体制点数设置有误!  请再次设置!")
        print()
        continue
    if iq < 1 or iq > 10:
        print("智商点数设置有误!  请再次设置!")
        print()
        continue
    if home < 1 or home > 10:
        print("家境点数设置有误!  请再次设置!")
        print()
        continue

    theSum = face + strong + iq + home
    if theSum > 20:
        print("设置的点数超过总点数! 请再次设置!")
        print()
        continue
    elif theSum < 20:
        print(f"您还有 {20 - theSum} 个属性点未分配! 请再次设置!")
        print()
    else:
        print("初始属性设置完毕: ", end=' ')
        print(f"颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}")     # ================================================================
        break

# 随机生成角色性别.
# random.randint(beg, end) -> 生成 [bed, end] 范围内的一个随机整数.
point = random.randint(1, 6)
# print(f"point = {point}")
if point % 2 == 1:
    gender = 'boy'
    print("0岁: 你出生了, 你是一个男孩")
else:
    gender = 'girl'
    print('0岁: 你出生了, 你是一个女孩')
print("-------------------------------------------------------------------")

# 设置出生点:  家境 + 随机数
# 家境 10 第一档 带来一些属性加成
# 家境 7-9 第二档 也有属性加成
# 家境 4-6 第三档 少数属性加成
# 家境 1-3 第四档 会扣属性
# 为了简单, 就只生成[1, 3]的随机数.
point = random.randint(1, 3)
if home == 10:
    # 第一档
    print("1岁: 你从小生活在帝都, 你的父母是高关政要")
    home += 1
    face += 1
    iq += 1
elif 7 <= home <= 9:
    # 第二档
    if point == 1:
        print("1岁: 你从小生活在大城市, 你的父母是公务员")
        face += 2
    elif point == 2:
        print("1岁: 你从小生活在大城市, 你的父母是企业高管")
    else:
        print("1岁: 你从小生活在大城市, 你的父母是大学教授")
        iq += 2
elif 4 <= home <= 6:
    # 第三档
    if point == 1:
        print("1岁: 你从小生活在小城市, 你的父母是医生")
        strong += 1
    elif point == 2:
        print("1岁: 你从小生活在小城市, 你的父母是老师")
        iq += 1
    else:
        print("1岁: 你从小生活在小县城, 你的父母是个体户")
        home += 1
else:
    # 第四档
    if point == 1:
        print("1岁: 你从小生活在农村, 你的父母是农民")
        strong += 1
        face -= 2
    elif point == 2:
        print("1岁: 你从小生活在穷乡僻壤的地方, 你的父母是无业游民")
        home -= 1
    else:
        print("1岁: 你从小生活在镇上, 你的父母感情不和")
        iq -= 1

print(f"颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}")
print("-------------------------------------------------------------------")


# 针对每一岁 生成人生经历
# 1. 幼年阶段: 2-10 岁
# 把一整年的打印都整理到一个字符串中, 在一年结束的时候统一打印
for age in range(2, 11):
    info = f'{age}岁: '
    # 生成[1, 3] 的随机数
    point = random.randint(1, 3)
    # 编写各种事件
    # (1). 性别触发的事件
    if gender == 'girl' and home <= 3 and point == 1:
        info += "你的家里人重男轻女四思想严重, 你被遗弃后饿死了"
        print(info)
        print("+----------+")
        print("|  游戏结束  |")
        print("+----------+")
        sys.exit(0)
    # (2). 体质触发的事件
    elif strong < 6 and point < 3:
        info += "你感染了新冠病毒, "
        if home >= 4:
            info += "但在父母照料下, 你康复了"
            strong = 7
            home -= 2
        else:
            info += "付不起医疗费, 你的身体越来越糟"
            strong -= 1

    # (3). 颜值触发得事件
    elif face <= 4 and age >= 7:
        info += "因为你太丑了, 别的小朋友不喜欢你, "
        if iq > 5:
            info += "你决定用学习填充自己"
            iq += 1
        else:
            if gender == 'boy':
                info += "经常和小朋友打架"
                strong += 1
                iq -= 1
            else:
                info += "经常被别的小朋友欺负"
                strong -= 1
    # (4). 智商触发的事件
    elif iq < 5:
        info += "你看起来傻傻的, "
        if home >= 8 and age >= 6:
            info += "进入了重点小学"
            iq += 2
        elif 4 <= home <= 7:
            if gender == 'boy':
                info += "你想成为运动员"
                strong += 1
            else:
                info += "父母把你打扮的很好看"
                face += 1
        else:
            info += "你的父母为此经常吵架"
            if point == 1:
                strong -= 1
            elif point == 2:
                iq -= 1
            else:
                pass
    else:
        info += "今年无大事发生, 健康成长, "
        if point == 1:
            info += "你更强壮了"
            strong += 1
        elif point == 2:
            info += "你变得更好看了"
            face += 1
    print(info)
    print(f"颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}")
    print("-------------------------------------------------------------------")
    time.sleep(2)

